/**
 * 森林中所有深度相同的节点的度相同
 * 问N个节点的符合上述条件的森林一共有多少个，不计编号
 * 简单推算一下，发现 Di = SIGMA{Dj, j是i的因子}
 * 反过来就是说Di对i的倍数有贡献，类似筛法筛过去即可
 * 
 * 初始值情况没有处理好，因此求出的数列移了位。
 * 因此要输出 [2...N+1]， 而不是输出 [1...N]
 */
#include <bits/stdc++.h>
#include <bits/extc++.h>
using namespace std;


using llt = long long;
using vi = vector<int>;
using vll = vector<llt>;
llt const MOD = 998244353LL;


int N;
vll A;
void work(){ 
    cin >> N;
    A.assign(N + 2, 1);
    for(int i=2;i<=N+1;++i){
        llt a = A[i];
        for(int j=i+1;j<=N+1;j+=i){
            A[j] = (A[j] + a) % MOD;
        }
    }
    for(int i=2;i<=N+1;++i)cout << A[i] << " ";
    cout << endl;
	return;
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);	
    int nofkase = 1;
	// cin >> nofkase;
	while(nofkase--) work();
	return 0;
}